package cn.fl.project.transform;

import java.util.ArrayList;
import java.util.List;

import cn.cmm.base.framework.utils.CollectionUtils;
import cn.fl.project.dto.PrjPrdPaySchMDTO;
import cn.fl.project.vo.PrjPrdPaySchMVO;

 /**
 * @Description: 项目产品支付表主信息表 转换器
 * VO是客户端传递数据到服务端进行转换的数据 
 * VO转换数据变成DTO传递到服务端 
 * VO不能在服务端出现
 */
public class PrjPrdPaySchMVOTransform {


	/**
	 * DTO 转  VO
	 * @param dto PrjPrdPaySchMDTO
	 * @return PrjPrdPaySchMVO
	 */
	public static PrjPrdPaySchMVO toVO(PrjPrdPaySchMDTO dto) {
		PrjPrdPaySchMVO  vo = null;
		if (dto != null) { 
			vo = new PrjPrdPaySchMVO();
			vo.setId(dto.getId());
			vo.setWsPaySchId(dto.getWsPaySchId());// 我司支付表ID，REQ-5561添加
			vo.setPrjPrdDtlId(dto.getPrjPrdDtlId());//产品明细ID
			vo.setTotLsItmAmt(dto.getTotLsItmAmt());//租赁物件总价值（元）
			vo.setContAmt(dto.getContAmt());//合同总额（元）
			vo.setLsPd(dto.getLsPd());//租赁期数
            vo.setLsPd2(dto.getLsPd2());//租赁期数
			vo.setLsPdUntCd(dto.getLsPdUntCd());//租赁期数单位（PRJ0010）
			vo.setAnnIntRatePct(dto.getAnnIntRatePct());//租赁年利率（%）
			vo.setIntRateRsPct(dto.getIntRateRsPct());//利率上浮比例（%）
			vo.setPayWayCd(dto.getPayWayCd());//支付方式（PRJ0009）
			vo.setActLsAmt(dto.getActLsAmt());//实际融资租赁价值（元）
			vo.setIrrPct(dto.getIrrPct());//实际收益率(IRR)
			vo.setEachEstRntAmt(dto.getEachEstRntAmt());//每期预估租金（元）
			vo.setLsCalWayCd(dto.getLsCalWayCd());//租赁计算方式（PRJ0012）
			vo.setIntRateWayCd(dto.getIntRateWayCd());//租赁年利率计算方式（PRJ0011）
			vo.setLsCoe(dto.getLsCoe());//租赁系数
			vo.setDpstHdlWayCd(dto.getDpstHdlWayCd());//保证金处理方式（PRJ0013）
			vo.setExpHdlWayCd(dto.getExpHdlWayCd());//租赁期满处理方式（PRJ0014）
			vo.setNoPayWayCd(dto.getNoPayWayCd());//不还款处理方式（PRJ0015）
			vo.setPaySchNo(dto.getPaySchNo());//支付表编号
			vo.setPrjId(dto.getPrjId());//项目ID
			vo.setCstId(dto.getCstId());//客户ID
			vo.setCstNm(dto.getCstNm());
			vo.setPrdNm(dto.getPrdNm());
			vo.setPrjNm(dto.getPrjNm());
			vo.setLsDt(dto.getLsDt());//起租日
			vo.setFstRepayDt(dto.getFstRepayDt());//还款日
			vo.setCrtTm(dto.getCrtTm());//创建时间
			vo.setCrtUsrId(dto.getCrtUsrId());//创建人
			vo.setMdfTm(dto.getMdfTm());//修改时间
			vo.setMdfUsrId(dto.getMdfUsrId());//修改人
			vo.setLsCntNo(dto.getLsCntNo());//融资租赁合同号
			vo.setIsHaveException(dto.getIsHaveException());//是否异常
			vo.setCstCd(dto.getCstCd());//客户编号
			vo.setPrjTypCd(dto.getPrjTypCd());//项目类型
			vo.setPrdTypCd(dto.getPrdTypCd());// 项目产品类型
			vo.setBizTypCd(dto.getBizTypCd());//项目业务类型
			vo.setCstMgrId(dto.getCstMgrId());//客户经理Id
			vo.setCstMgrNm(dto.getCstMgrNm());//客户经理名称
			vo.setCstMgrOrgCd(dto.getCstMgrOrgCd());//客户经理组织架构编码
			vo.setPrjTypCdNm(dto.getPrjTypCdNm());//项目类型名称
			vo.setBizTypCdNm(dto.getBizTypCdNm());//项目业务类型名称
			vo.setIsDel(dto.getIsDel());//是否删除
			//---------------------附加信息-------------------------------//
			vo.setLsCalWayCdNm(dto.getLsCalWayCdNm());
			vo.setDpstHdlWayCdNm(dto.getDpstHdlWayCdNm());
			vo.setIntRateWayCdNm(dto.getIntRateWayCdNm());
			vo.setExpHdlWayCdNm(dto.getExpHdlWayCdNm());
			vo.setPayWayCdNm(dto.getPayWayCdNm());
			vo.setLsPdUntCdNm(dto.getLsPdUntCdNm());
			vo.setNoPayWayCdNm(dto.getNoPayWayCdNm());
			vo.setPrdStsCdNm(dto.getPrdStsCdNm());
			vo.setPrjPrdPaySchDList(PrjPrdPaySchDVOTransform.toVOList(dto.getPrjPrdPaySchDList()));
			vo.setTotalIntAmt(dto.getTotalIntAmt());
			vo.setTotalPrinAmt(dto.getTotalPrinAmt());
			vo.setTotalRntAmt(dto.getTotalRntAmt());
			vo.setTotalRemPrinAmt(dto.getTotalRemPrinAmt());
			vo.setFirstPayAmt(dto.getFirstPayAmt());
			vo.setFeeDetailList(PrjPrdPaySchDVOTransform.toVOList(dto.getFeeDetailList()));
			vo.setPrjPrdPayDetailList(PrjPrdPrpsFeeDetailVOTransform.toVOList(dto.getPrjPrdPayDetailList()));
			vo.setIsModify(dto.getIsModify());//是否修改
			
			
			vo.setPrdMdl(dto.getPrdMdl());//型号
			vo.setBackDt(dto.getBackDt());
			vo.setFormDt(dto.getFormDt());
			vo.setStlDt(dto.getStlDt());
			vo.setPrjPrdId(dto.getPrjPrdId());
			//-------------------结清费用数据---------------------------------//

		    vo.setOverdueAmt(dto.getOverdueAmt());
		    vo.setPenaltyAmt(dto.getPenaltyAmt());
		    vo.setActualAmt(dto.getActualAmt());
		    vo.setBeforeSettRntAmt(dto.getBeforeSettRntAmt());
		    vo.setDetAmt(dto.getDetAmt());
		    vo.setInsDep(dto.getInsDep());
		    vo.setFinalPayAmt(dto.getFinalPayAmt());
		    vo.setLastRntAmt(dto.getLastRntAmt());
		    vo.setLastPrintAmt(dto.getLastPrintAmt());
		    vo.setLastIntAmt(dto.getLastIntAmt());
		    vo.setOtherAmt(dto.getOtherAmt());
		    vo.setPayAmount(dto.getPayAmount());
		    vo.setTotalFirstPayAmt(dto.getTotalFirstPayAmt());
		    vo.setRickDep(dto.getRickDep());
		    vo.setCheckPayAmt(dto.getCheckPayAmt());
		    vo.setTotalActPrinAmt(dto.getTotalActPrinAmt());
		    vo.setTotalActIntAmt(dto.getTotalActIntAmt());
		    vo.setSubFeeAmtDetilList(PrjPrdPaySchDVOTransform.toVOList(dto.getSubFeeAmtDetilList()));
		    vo.setSubFeeAmtTotalList(PrjPrdPaySchDVOTransform.toVOList(dto.getSubFeeAmtTotalList()));
		    vo.setSettFeeAmtList(PrjPrdPaySchDVOTransform.toVOList(dto.getSettFeeAmtList()));
		    vo.setStartLsPd(dto.getStartLsPd());//结清开始期数
		    vo.setTotalSettAmt(dto.getTotalSettAmt());//应收结清款
		    vo.setIsOdPay(dto.getIsOdPay());//是否逾期
		    vo.setNormalSettFlag(dto.getNormalSettFlag());
		    vo.setPerSettFlag(dto.getPerSettFlag());
		    vo.setBeforeSettRntAmt(dto.getBeforeSettRntAmt());
		    vo.setBeforeSettLastPrintAmt(dto.getBeforeSettLastPrintAmt());
		    vo.setBeforeSettLastIntAmt(dto.getBeforeSettLastIntAmt());
		    vo.setOverduePd(dto.getOverduePd());
		    vo.setDetHandleWayCdNm(dto.getDetHandleWayCdNm());
		    vo.setInsDepHandleWayCdNm(dto.getInsDepHandleWayCdNm());
		    vo.setDiscountAmt(dto.getDiscountAmt());
			vo.setDiscountAmt1(dto.getDiscountAmt1());
		    vo.setBreachAmt(dto.getBreachAmt());
		    vo.setFromSettLastRntAmt(dto.getFromSettLastRntAmt());
		    vo.setTotalActRntAmt(dto.getTotalActRntAmt());
		    vo.setDefStartLsPd(dto.getDefStartLsPd());//默认开始期次
		    vo.setStlAmt(dto.getStlAmt());// 结清金额
		    vo.setApplyDt(dto.getApplyDt());
		    vo.setpNo(dto.getpNo());
		    vo.setPInstId(dto.getPInstId());
		    vo.setpDataId(dto.getpDataId());
		    vo.setAudStsCd(dto.getAudStsCd());
		    vo.setPrdStsCd(dto.getPrdStsCd());
		    vo.setIsHaveSettFee(dto.getIsHaveSettFee());
		    vo.setBuOrgCd(dto.getBuOrgCd());
		    vo.setStlPd(dto.getStlPd());
		    vo.setInitLsPct(dto.getInitLsPct());
		    vo.setBizFlag(dto.getBizFlag());
		    vo.setCrCardNo(dto.getCrCardNo());
			if(null != dto.getCurrentIntAmt()){
				vo.setCurrentIntAmt(dto.getCurrentIntAmt());
			}
			
			if(null != dto.getCurrentPrintAmt()){
				vo.setCurrentPrintAmt(dto.getCurrentPrintAmt());
			}
			vo.setPayerStsCd(dto.getPayerStsCd());
			vo.setThdPayAmt(dto.getThdPayAmt());
			vo.setThdPayDt(dto.getThdPayDt());
			vo.setPrjPrdPaySchDFeeShow(PrjPrdPaySchDFeeShowVOTransform.toVO(dto.getPrjPrdPaySchDFeeShow()));
			vo.setQuatPrdAmt(dto.getQuatPrdAmt());
			vo.setIsSubmitCredit(dto.getIsSubmitCredit());
			vo.setIsSqBiz(dto.getIsSqBiz());
			vo.setIsApplyOrgPay(dto.getIsApplyOrgPay());
            vo.setRebateIrr(dto.getRebateIrr());
            vo.setVersion(dto.getVersion());
            vo.setIsEnable(dto.getIsEnable());
            vo.setPaySchTypCd(dto.getPaySchTypCd());
			//三方金融机构Id
			vo.setFundRasInsId(dto.getFundRasInsId());
            //三方金融机构名称
            vo.setFundRasInsNm(dto.getFundRasInsNm());

            vo.setDtlVO(PrjPrdDtlVOTransform.toVO(dto.getDtl()));
			vo.setCstIrr(dto.getCstIrr());
            // 结清对客Irr
            vo.setCstStlIrr(dto.getCstStlIrr());

			vo.setTagTypeCd(dto.getTagTypeCd());
			// 三方资管放款状态-置空标识
			vo.setPayerStsCdNull(dto.getPayerStsCdNull());
			// 三方资管实际放款金额-置空标识
			vo.setThdPayAmtNull(dto.getThdPayAmtNull());
			// 三方资管实际放款时间-置空标识
			vo.setThdPayDtNull(dto.getThdPayDtNull());
			// 是否低息业务
			vo.setIsLowBiz(dto.getIsLowBiz());
			vo.setSpeLsPd(dto.getSpeLsPd());
			vo.setInsCode(dto.getInsCode());

		}
		return vo;
	}

	/**
	 * VO 转 DTO
	 * @param vo PrjPrdPaySchMVO
	 * @return PrjPrdPaySchMDTO
	 */
	public static PrjPrdPaySchMDTO toDTO(PrjPrdPaySchMVO vo) {
		PrjPrdPaySchMDTO dto = null;
		if (vo != null) {
			dto = new PrjPrdPaySchMDTO();
			dto.setId(vo.getId());
			dto.setPrjPrdDtlId(vo.getPrjPrdDtlId());//产品明细ID
			dto.setTotLsItmAmt(vo.getTotLsItmAmt());//租赁物件总价值（元）
			dto.setContAmt(vo.getContAmt());//合同总额（元）
			dto.setLsPd(vo.getLsPd());//租赁期数
            dto.setLsPd2(vo.getLsPd2());//租赁期数
			dto.setLsPdUntCd(vo.getLsPdUntCd());//租赁期数单位（PRJ0010）
			dto.setAnnIntRatePct(vo.getAnnIntRatePct());//租赁年利率（%）
			dto.setIntRateRsPct(vo.getIntRateRsPct());//利率上浮比例（%）
			dto.setPayWayCd(vo.getPayWayCd());//支付方式（PRJ0009）
			dto.setActLsAmt(vo.getActLsAmt());//实际融资租赁价值（元）
			dto.setIrrPct(vo.getIrrPct());//实际收益率(IRR)
			dto.setEachEstRntAmt(vo.getEachEstRntAmt());//每期预估租金（元）
			dto.setLsCalWayCd(vo.getLsCalWayCd());//租赁计算方式（PRJ0012）
			dto.setIntRateWayCd(vo.getIntRateWayCd());//租赁年利率计算方式（PRJ0011）
			dto.setLsCoe(vo.getLsCoe());//租赁系数
			dto.setDpstHdlWayCd(vo.getDpstHdlWayCd());//保证金处理方式（PRJ0013）
			dto.setExpHdlWayCd(vo.getExpHdlWayCd());//租赁期满处理方式（PRJ0014）
			dto.setNoPayWayCd(vo.getNoPayWayCd());//不还款处理方式（PRJ0015）
			dto.setPaySchNo(vo.getPaySchNo());//支付表编号
			dto.setPrjId(vo.getPrjId());//项目ID
			dto.setCstId(vo.getCstId());//客户ID
			dto.setIsDel(vo.getIsDel());//是否删除
			dto.setLsDt(vo.getLsDt());//起租日
			dto.setFstRepayDt(vo.getFstRepayDt());//还款日
			dto.setPrdStsCdNm(vo.getPrdStsCdNm());
			
			dto.setCrtTm(vo.getCrtTm());//创建时间
			dto.setCrtUsrId(vo.getCrtUsrId());//创建人
			dto.setMdfTm(vo.getMdfTm());//修改时间
			dto.setMdfUsrId(vo.getMdfUsrId());//修改人
			//---------------------附加信息-------------------------------//
			dto.setLsCalWayCdNm(vo.getLsCalWayCdNm());
			dto.setDpstHdlWayCdNm(vo.getDpstHdlWayCdNm());
			dto.setIntRateWayCdNm(vo.getIntRateWayCdNm());
			dto.setExpHdlWayCdNm(vo.getExpHdlWayCdNm());
			dto.setPayWayCdNm(vo.getPayWayCdNm());
			dto.setLsPdUntCdNm(vo.getLsPdUntCdNm());
			dto.setNoPayWayCdNm(vo.getNoPayWayCdNm());
			dto.setPrjPrdPaySchDList(PrjPrdPaySchDVOTransform.toDTOList(vo.getPrjPrdPaySchDList()));
			dto.setTotalIntAmt(vo.getTotalIntAmt());
			dto.setTotalPrinAmt(vo.getTotalPrinAmt());
			dto.setTotalRntAmt(vo.getTotalRntAmt());
			dto.setTotalRemPrinAmt(vo.getTotalRemPrinAmt());
			dto.setFirstPayAmt(vo.getFirstPayAmt());
			dto.setFeeDetailList(PrjPrdPaySchDVOTransform.toDTOList(vo.getFeeDetailList()));
			dto.setIsModify(vo.getIsModify());//是否修改
			dto.setPrjPrdPayDetailList(PrjPrdPrpsFeeDetailVOTransform.toDTOList(vo.getPrjPrdPayDetailList()));
			dto.setIsHaveException(vo.getIsHaveException());//是否异常

			dto.setPrdMdl(vo.getPrdMdl());//型号
			dto.setBackDt(vo.getBackDt());
			dto.setFormDt(vo.getFormDt());
			dto.setStlDt(vo.getStlDt());
			dto.setPrjPrdId(vo.getPrjPrdId());
			dto.setIsOdPay(vo.getIsOdPay());
			//-------------------结清费用数据---------------------------------//

			dto.setOverdueAmt(vo.getOverdueAmt());
			dto.setPenaltyAmt(vo.getPenaltyAmt());
			dto.setActualAmt(vo.getActualAmt());
			dto.setBeforeSettRntAmt(vo.getBeforeSettRntAmt());
			dto.setDetAmt(vo.getDetAmt());
			dto.setInsDep(vo.getInsDep());
			dto.setFinalPayAmt(vo.getFinalPayAmt());
			dto.setLastRntAmt(vo.getLastRntAmt());
			dto.setLastPrintAmt(vo.getLastPrintAmt());
			dto.setLastIntAmt(vo.getLastIntAmt());
			dto.setOtherAmt(vo.getOtherAmt());
			dto.setPayAmount(vo.getPayAmount());
			dto.setTotalFirstPayAmt(vo.getTotalFirstPayAmt());
			dto.setRickDep(vo.getRickDep());
			dto.setCheckPayAmt(vo.getCheckPayAmt());
			dto.setTotalActPrinAmt(vo.getTotalActPrinAmt());
			dto.setTotalActIntAmt(vo.getTotalActIntAmt());
			dto.setSubFeeAmtDetilList(PrjPrdPaySchDVOTransform.toDTOList(vo.getSubFeeAmtDetilList()));
			dto.setSubFeeAmtTotalList(PrjPrdPaySchDVOTransform.toDTOList(vo.getSubFeeAmtTotalList()));
			dto.setSettFeeAmtList(PrjPrdPaySchDVOTransform.toDTOList(vo.getSettFeeAmtList()));
			 dto.setStartLsPd(vo.getStartLsPd());//结清开始期数
			 dto.setTotalSettAmt(vo.getTotalSettAmt());//应收结清款
			 dto.setBeforeSettRntAmt(vo.getBeforeSettRntAmt());
			 dto.setBeforeSettLastPrintAmt(vo.getBeforeSettLastPrintAmt());
			 dto.setBeforeSettLastIntAmt(vo.getBeforeSettLastIntAmt());
			 dto.setOverduePd(vo.getOverduePd());
			 dto.setDetHandleWayCdNm(vo.getDetHandleWayCdNm());
			 dto.setInsDepHandleWayCdNm(vo.getInsDepHandleWayCdNm());
			  dto.setFromSettLastRntAmt(vo.getFromSettLastRntAmt());
			  dto.setTotalActRntAmt(vo.getTotalActRntAmt());
			 dto.setLsCntNo(vo.getLsCntNo());//融资租赁合同号
			 dto.setNormalSettFlag(vo.getNormalSettFlag());
			 dto.setPerSettFlag(vo.getPerSettFlag());
			 dto.setDiscountAmt(vo.getDiscountAmt());
			dto.setDiscountAmt1(vo.getDiscountAmt1());
			 dto.setBreachAmt(vo.getBreachAmt());
			 dto.setDefStartLsPd(vo.getDefStartLsPd());//默认开始期次
			 dto.setStlAmt(vo.getStlAmt());
			 dto.setApplyDt(vo.getApplyDt());
			 dto.setpNo(vo.getpNo());
			 dto.setPInstId(vo.getPInstId());
			 dto.setAudStsCd(vo.getAudStsCd());
			 dto.setPrdStsCd(vo.getPrdStsCd());
			 dto.setIsHaveSettFee(vo.getIsHaveSettFee());
			 dto.setBuOrgCd(vo.getBuOrgCd());
			 dto.setStlPd(vo.getStlPd());
			 dto.setInitLsPct(vo.getInitLsPct());
			 dto.setBizFlag(vo.getBizFlag());
			 dto.setCrCardNo(vo.getCrCardNo());
			if(null != vo.getCurrentIntAmt()){
				dto.setCurrentIntAmt(vo.getCurrentIntAmt());
			}
			if(null != vo.getCurrentPrintAmt()){
				dto.setCurrentPrintAmt(vo.getCurrentPrintAmt());
			}
			dto.setPayerStsCd(vo.getPayerStsCd());
			dto.setThdPayAmt(vo.getThdPayAmt());
			dto.setThdPayDt(vo.getThdPayDt());
			dto.setPrjPrdPaySchDFeeShow(PrjPrdPaySchDFeeShowVOTransform.toDTO(vo.getPrjPrdPaySchDFeeShow()));
			dto.setQuatPrdAmt(vo.getQuatPrdAmt());
			dto.setIsSubmitCredit(vo.getIsSubmitCredit());
			dto.setIsSqBiz(vo.getIsSqBiz());
			dto.setIsApplyOrgPay(vo.getIsApplyOrgPay());
            dto.setRebateIrr(vo.getRebateIrr());
            dto.setVersion(vo.getVersion());
			dto.setIsEnable(vo.getIsEnable());
			dto.setPaySchTypCd(vo.getPaySchTypCd());
			dto.setInsCode(vo.getInsCode());
			dto.setCstIrr(vo.getCstIrr());
            // 结清对客Irr
            dto.setCstStlIrr(vo.getCstStlIrr());

			dto.setTagTypeCd(vo.getTagTypeCd());
			// 三方资管放款状态-置空标识
			dto.setPayerStsCdNull(vo.getPayerStsCdNull());
			// 三方资管实际放款金额-置空标识
			dto.setThdPayAmtNull(vo.getThdPayAmtNull());
			// 三方资管实际放款时间-置空标识
			dto.setThdPayDtNull(vo.getThdPayDtNull());
			// 是否低息业务
			dto.setIsLowBiz(vo.getIsLowBiz());
			dto.setSpeLsPd(vo.getSpeLsPd());
		}
		return dto;
	}
	
	/**
	 * DTO集合 转 VO集合
	 * @param list List<PrjPrdPaySchM>
	 * @return List<PrjPrdPaySchMDTO>
	 */
	public static List<PrjPrdPaySchMVO> toVOList(List<PrjPrdPaySchMDTO> list) {
		List<PrjPrdPaySchMVO>  voList = new ArrayList<PrjPrdPaySchMVO>();
		if(CollectionUtils.isNotEmpty(list)){
			for (PrjPrdPaySchMDTO dto : list) {
				voList.add(toVO(dto));
			}
		}
		return voList;
	}

	 /**
	  * VO集合 转 DTO集合
	  * @param list List<PrjPrdPaySchMVO>
	  * @return List<PrjPrdPaySchMDTO>
	  */
	 public static List<PrjPrdPaySchMDTO> toDTOList(List<PrjPrdPaySchMVO> list) {
		 List<PrjPrdPaySchMDTO>  dtoList = new ArrayList<PrjPrdPaySchMDTO>();
		 if(CollectionUtils.isNotEmpty(list)){
			 for (PrjPrdPaySchMVO vo : list) {
				 dtoList.add(toDTO(vo));
			 }
		 }
		 return dtoList;
	 }
}
